package cn.cj.erp.service.system;

import cn.cj.erp.bo.system.SysDeptBo;
import cn.cj.erp.entity.system.SysDept;
import cn.cj.erp.service.base.BaseService;
import java.util.List;

/**
 * 部门管理
 *
 * @author jianchene0
 */
public interface SysDeptService extends BaseService<SysDept, SysDeptBo> {
    /**
     * 查询部门树
     * @param params 查询参数
     * @return 部门树
     */
    List<SysDeptBo> queryTree(SysDeptBo params);

    /**
     * 获取当前可用排序号（parentId的所有子节点中的最大排序号+1）
     * @param parentId 父节ID
     * @return 当前可用排序号
     */
    Integer getCurrentUsedOrderNum(Long parentId);

    /**
     * 检查是否含有子部门
     * @param deptId 部门ID
     * @return true-有子部门，false-无子部门
     */
    boolean existChild(Long deptId);

    /**
     * 获取全部子部门ID列表，包含孙子部门，及其自己（{@code deptId}）
     * @param deptId 部门ID
     * @return 全部子部门ID列表
     */
    List<Long> listAllChildIds(Long deptId);
}
